\section{在\LaTeX 中插入表格和图片}

\subsection{使用表格}

使用\texttt{tabular}环境插入一个表格：
\\
\begin{tabular}[c]{cc} \\
\begin{minipage}{0.48\textwidth} \small
\begin{verbatim}
\begin{tabular}{l|cr} \hline
x & y & z \\ \hline
1234 & 5678 & 9012 \\ \cline{2-3}
34 & 56 & 78 \\ \hline
\end{tabular}
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.48\textwidth} \small
\begin{tabular}{l|cr} \hline
x & y & z \\ \hline
1234 & 5678 & 9012 \\ \cline{2-3}
34 & 56 & 78 \\ \hline
\end{tabular}
\end{minipage}
\\ \\
\end{tabular}
其中\texttt{l|cr}表示表格有三列，第一列左对齐，第二列居中，第三列右对齐，在第一行与第二行的位置插入竖线。同理，如果你的表格有五列，全部居中，那么你应该用\texttt{ccccc}。``\texttt{\&}''用来分隔同一行内不同的元素，而``\texttt{\bs \bs }''用来分隔两行，\verb|\hline|则会插入一条水平线。如果你不想插入一条贯穿整个表格的水平线，而是需要只在部分单元格下方绘制横线的话，可以使用\verb|\cline{开始-结束}|。你可能希望你的表格是居中放置的，而非默认的左对齐。你可以在表格的外面套一个\verb|\begin{center} \end{center}|来实现。

有时候可能会需要合并同一行内的单元格。这可以使用\verb|\multicolumn|命令。\verb|\multicolumn|接受三个参数，第一个参数表示横跨的行数，第二个参数表示格式，``\verb|l|''、``\verb|c|''、``\verb|r|''分别表示左对齐、居中、右对齐，``\verb#c|#''则表示居中且在右侧有竖线，第三个参数为单元格内容。

{
\ttfamily
\small
\begin{lstlisting}[frame=single, language=Tex]
\begin{tabular}{|c|c|ccc|}
\hline
处理器 & stc89c52 & ch32v & stm32f4 & msp432e4 \\ \hline
架构 & 8051 & RISCV & \multicolumn{2}{|c|}{Cortex-M4} \\ \hline
位宽 & 8        & \multicolumn{3}{c|}{32} \\ \hline
封装 & DIP      & \multicolumn{3}{c|}{QFP} \\ \hline
\end{tabular}
\end{lstlisting}
}

\begin{center}
\begin{tabular}{|c|c|c|c|c|}
\hline
处理器 & stc89c52 & ch32v & stm32f4 & msp432e4 \\ \hline
架构  & 8051 & RISCV & \multicolumn{2}{|c|}{Cortex-M4}          \\ \hline
位宽  & 8        & \multicolumn{3}{c|}{32}                                              \\ \hline
封装  & DIP      & \multicolumn{3}{c|}{QFP}                                             \\ \hline
\end{tabular} \\
\end{center}

在需要插入更加复杂的表格时，可以借助一些在线表格生成器或是许多编辑器的表格生成功能，以自动生成\LaTeX 格式的表格代码。这么做往往比手动编写表格代码更加高效。然而，笔者还是推荐大家了解手动编写表格的方法。这样在表格生成器犯错时才知道如何改正，在对自动生成的表格效果不满意时才知道如何调整。

\subsection{插入图片}

\LaTeX 并没有内置的图片支持，要想插入图片，需要使用宏包\texttt{graphicx}。
在调用了 graphicx 宏包以后,就可以使用\verb|\includegraphics[尺寸]{图片名}|命令加载图片了:
\\
\begin{tabular}[c]{cc} \\
\begin{minipage}{0.6\textwidth} \small
\begin{verbatim}
将这个二维标量场进行可视化得到下图：
\includegraphics[width=0.9\textwidth]{fig1}
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.4\textwidth} \tiny \setlength{\parindent}{2em}
将这个二维标量场进行可视化得到下图：
\includegraphics[width=0.9\textwidth]{figures/fig1}
\end{minipage}
\\ \\
\end{tabular}
图片需要和源代码放在一个文件夹下，图片名不需要加上扩展名。常用的尺寸选项如下：
\begin{itemize}
    \item \texttt{width=宽度}{} 将图片缩放到宽度为指定值
    \item \texttt{height=高度}{} 将图片缩放到高度为指定值
    \item \texttt{scale=倍数}{} 将图片缩放到指定倍数
    \item \texttt{angle=角度}{} 将图片逆时针旋转指定角度
\end{itemize}
\verb|\textwidth|表示文本占用的宽度。\verb|0.9\textwidth|就是文本占用宽度的0.9倍。

\subsection{浮动体}

内容丰富的文章或者书籍往往包含许多图片和表格等内容。这些内容的尺寸往往太大,导致分页困难。\LaTeX 为此引入了浮动体的机制,令大块的内容可以脱离上下文,放置在合适的位置。\LaTeX 预定义了两类浮动体环境\texttt{figure}和\texttt{table}。习惯上\texttt{figure}里放图片,\texttt{table}里放表格,但并没有严格限制,可以在任何一个浮动体里放置文字、公式、表格、图片等等任意内容。以\texttt{figure}环境的用法举例,\texttt{table}同理:
\\
\begin{tabular}[c]{cc} \\
\begin{minipage}{0.6\textwidth} \small
\begin{verbatim}
\begin{figure}
\includegraphics[width=0.8\textwidth]{fig1}
\caption{二维标量场的可视化}
\end{figure}
\end{verbatim}
\end{minipage}
&
\begin{minipage}{0.4\textwidth} \tiny \centering
\includegraphics[width=0.8\textwidth]{figures/fig1} \\
图1：二维标量场的可视化
\end{minipage}
\\ \\
\end{tabular}
使用\verb|\caption|可以自动给插图加上标题和编号（当然也可以不用），这个编号可以被交叉引用（交叉引用的相关讲解见后文）。\texttt{figure}和\texttt{table}还允许你使用\verb|\quad|和\verb|\\|进行分隔，从而创建并排的插图。如果你想要创建并排的插图但不想用\texttt{figure}，也可以将图片套在一个大的\texttt{tabular}里。

{
\small
\ttfamily
\begin{lstlisting}[frame=single,language=Tex]
\begin{figure}
\centering
\includegraphics[width=0.3\textwidth]{fig2}
\quad
\includegraphics[width=0.3\textwidth]{fig3}
\\
\includegraphics[width=0.6\textwidth]{fig4}
\caption{不同条件下得到的信号}
\end{figure}
\end{lstlisting}
}
{
\noindent
\begin{minipage}{\textwidth}
    \centering
    \begin{tabular}{cc}
    \includegraphics[width=0.3\textwidth]{figures/fig2}&
    \includegraphics[width=0.3\textwidth]{figures/fig3}\\
    \multicolumn{2}{c}{\includegraphics[width=0.6\textwidth]{figures/fig4}} \\
    \multicolumn{2}{c}{图1：不同条件下得到的信号}
    \end{tabular} \newline
\end{minipage}
}

有时我们不仅希望让一个插图包含多个子图，而且需要每个子图都带有一个可以被交叉引用的标题和编号。此时可以使用\verb|subcaption|宏包提供的\verb|subfigure|环境。\verb|subfigure|需要一个参数注明子图的宽度，除此之外用法与\verb|figure|基本一致。\verb|subfigure|并未提供任何排布子图的机制，建议将各个subfigure套在一个大的tabular里以保证排版美观。示例如下：

{
\ttfamily
\small
\begin{lstlisting}[frame=single,language=Tex]
\begin{figure}
    \centering
    \begin{tabular}{cc}
        \begin{subfigure}{0.3\textwidth}
            \includegraphics[width=\textwidth]{figures/fig2}
            \caption{终端开路}
        \end{subfigure} &
        \begin{subfigure}{0.3\textwidth}
            \includegraphics[width=\textwidth]{figures/fig3}
            \caption{终端短路}
        \end{subfigure} \\
        \multicolumn{2}{c}{
            \begin{subfigure}{0.6\textwidth}
                \includegraphics[width=\textwidth]{figures/fig4}
                \caption{阻抗匹配}
            \end{subfigure}
        }
        \end{tabular}
 \caption{不同条件下得到的信号}
\end{figure}
\end{lstlisting}
}

{
\noindent
\begin{minipage}{\textwidth}
    \centering
    \begin{tabular}{cc}
    \includegraphics[width=0.3\textwidth]{figures/fig2}&
    \includegraphics[width=0.3\textwidth]{figures/fig3}\\
    {\small (a) 终端开路} & {\small (b) 终端短路} \\
    \multicolumn{2}{c}{\includegraphics[width=0.6\textwidth]{figures/fig4}} \\
    \multicolumn{2}{c}{\small (c) 阻抗匹配} \\
    \multicolumn{2}{c}{图1：不同条件下得到的信号} \\
    \end{tabular} \newline
\end{minipage}
}
